package to4.client;

import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.KeyUpEvent;
import com.google.gwt.event.dom.client.KeyUpHandler;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.CheckBox;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.TextArea;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.VerticalPanel;

public class ZonderVoegAutoToe {
	private ZonderHome ZH;
	private boolean[] provincies = new boolean[12];
	private int aantalCheckBox;
	public ZonderVoegAutoToe(ZonderHome thema5){
		this.ZH = thema5;
	}

	public Panel createPage(final String email){
		FlowPanel eindPanel = new FlowPanel();
		VerticalPanel vertpan = new VerticalPanel();
		vertpan.addStyleName("voegAutoZonder");
		HorizontalPanel horizon30 = new HorizontalPanel();
		HorizontalPanel horizon31 = new HorizontalPanel();
		HorizontalPanel horizon32 = new HorizontalPanel();
		HorizontalPanel horizon34 = new HorizontalPanel();
		HorizontalPanel horizon35 = new HorizontalPanel();
		HorizontalPanel horizon36 = new HorizontalPanel();
		HorizontalPanel horizon37 = new HorizontalPanel();
		HorizontalPanel horizon38 = new HorizontalPanel();
		HorizontalPanel horizon39 = new HorizontalPanel();
		Label voegautotoe = new Label("Voeg een auto toe");
		voegautotoe.addStyleName("voegautolab");
		final Image goed13 = new Image("vink.png");
		goed13.setVisible(false);
		final Image fout13 = new Image("kruis.png");
		fout13.setVisible(false);
		final Image goed14 = new Image("vink.png");
		goed14.setVisible(false);
		final Image fout14 = new Image("kruis.png");
		fout14.setVisible(false);
		final Image goed15 = new Image("vink.png");
		goed15.setVisible(false);
		final Image fout15 = new Image("kruis.png");
		fout15.setVisible(false);
		final Image goed16 = new Image("vink.png");
		goed16.setVisible(false);
		final Image fout16 = new Image("kruis.png");
		fout16.setVisible(false);
		Label merk = new Label("Merk auto:");
		merk.addStyleName("registreer2metMerk");
		final TextBox merkText = new TextBox();
		merkText.addStyleName("registreerMerkText");
		Button voegtoe = new Button("Voeg toe");
		merkText.addKeyUpHandler(new KeyUpHandler() {

			@Override
			public void onKeyUp(KeyUpEvent event) {
				if (merkText.getText().matches("^[a-z]{1}$")) {
					String s = merkText.getText();
					merkText.setText(s.toUpperCase());
				}
				if (!merkText.getText().equals("")) {
					goed13.setVisible(true);
					fout13.setVisible(false);
				}
				else {
					fout13.setVisible(true);
					goed13.setVisible(false);
				}
			}
		});

		Label type = new Label("Type auto:");
		type.addStyleName("registeer2metTypeLab");
		final TextBox typeText = new TextBox();
		typeText.addStyleName("registreer2metTextbox");

		typeText.addKeyUpHandler(new KeyUpHandler() {
			@Override
			public void onKeyUp(KeyUpEvent event) {
				if (typeText.getText().matches("^[a-z]{1}$")) {
					String s = typeText.getText();
					typeText.setText(s.toUpperCase());
				}
				if (!typeText.getText().equals("")) {
					goed14.setVisible(true);
					fout14.setVisible(false);
				}
				else {
					fout14.setVisible(true);
					goed14.setVisible(false);
				}
			}
		});

		Label plaats = new Label("Aantal plaatsen in uw auto incl. chauffeur");
		plaats.addStyleName("registeer2metTypeLab");
		final TextBox plaatsText = new TextBox();
		plaatsText.addStyleName("registreer2metTextbox");
		Label plaatsen = new Label("plaatsen");

		plaatsText.addKeyUpHandler(new KeyUpHandler() {
			@Override
			public void onKeyUp(KeyUpEvent event) {
				if (plaatsText.getText().matches("^[a-z]{1}$")) {
					String s = plaatsText.getText();
					plaatsText.setText(s.toUpperCase());
				}
				if (plaatsText.getText().matches("^[0-9]{1,}$")) {
					goed15.setVisible(true);
					fout15.setVisible(false);
				}
				else {
					fout15.setVisible(true);
					goed15.setVisible(false);
				}
			}
		});

		Label titleprovincie = new Label("Ik rijd door de volgende provincies:");
		final CheckBox drenthe = new CheckBox("Drenthe");
		final CheckBox flevoland = new CheckBox("Flevoland");
		flevoland.setStyleName("reg2checkbox1");
		final CheckBox friesland = new CheckBox("Friesland");
		friesland.setStyleName("reg2checkbox1");
		final CheckBox gelderland = new CheckBox("Gelderland");
		gelderland.setStyleName("reg2checkbox1");
		final CheckBox groningen = new CheckBox("Groningen");
		final CheckBox limburg = new CheckBox("Limburg");
		limburg.setStyleName("reg2checkbox2");
		final CheckBox noordbrabant = new CheckBox("Noord-Brabant");
		noordbrabant.setStyleName("reg2checkbox3");
		final CheckBox noordholland = new CheckBox("Noord-Holland");
		noordholland.setStyleName("reg2checkbox4");
		final CheckBox overijssel = new CheckBox("Overijssel");
		final CheckBox utrecht = new CheckBox("Utrecht");
		utrecht.setStyleName("reg2checkbox5");
		final CheckBox zeeland = new CheckBox("Zeeland");
		zeeland.setStyleName("reg2checkbox6");
		final CheckBox zuidholland = new CheckBox("Zuid-Holland");
		zuidholland.setStyleName("reg2checkbox3");

		drenthe.addClickHandler(new ClickHandler(){
			@Override
			public void onClick(ClickEvent event) {
				if(drenthe.getValue() == true){
					provincies[0] = true;
					aantalCheckBox++;
					if (aantalCheckBox > 1) {
						goed16.setVisible(true);
						fout16.setVisible(false);
					}
					else
					{
						goed16.setVisible(false);
						fout16.setVisible(true);
					}
				}
				if(drenthe.getValue() == false){
					provincies[0] = false;
					aantalCheckBox--;
					if (aantalCheckBox > 1) {
						goed16.setVisible(true);
						fout16.setVisible(false);
					}
					else
					{
						goed16.setVisible(false);
						fout16.setVisible(true);
					}
				}
			}
		});
		flevoland.addClickHandler(new ClickHandler(){
			@Override
			public void onClick(ClickEvent event) {
				if(flevoland.getValue() == true){
					provincies[1] = true;
					aantalCheckBox++;
					if (aantalCheckBox > 1) {
						goed16.setVisible(true);
						fout16.setVisible(false);
					}
					else
					{
						goed16.setVisible(false);
						fout16.setVisible(true);
					}
				}
				if(flevoland.getValue() == false){
					provincies[1] = false;
					aantalCheckBox--;
					if (aantalCheckBox > 1) {
						goed16.setVisible(true);
						fout16.setVisible(false);
					}
					else
					{
						goed16.setVisible(false);
						fout16.setVisible(true);
					}
				}
			}
		});
		friesland.addClickHandler(new ClickHandler(){
			@Override
			public void onClick(ClickEvent event) {
				if(friesland.getValue() == true){
					provincies[2] = true;
					aantalCheckBox++;
					if (aantalCheckBox > 1) {
						goed16.setVisible(true);
						fout16.setVisible(false);
					}
					else
					{
						goed16.setVisible(false);
						fout16.setVisible(true);
					}
				}
				if(friesland.getValue() == false){
					provincies[2] = false;
					aantalCheckBox--;
					if (aantalCheckBox > 1) {
						goed16.setVisible(true);
						fout16.setVisible(false);
					}
					else
					{
						goed16.setVisible(false);
						fout16.setVisible(true);
					}
				}
			}
		});
		gelderland.addClickHandler(new ClickHandler(){
			@Override
			public void onClick(ClickEvent event) {
				if(gelderland.getValue() == true){
					provincies[3] = true;
					aantalCheckBox++;
					if (aantalCheckBox > 1) {
						goed16.setVisible(true);
						fout16.setVisible(false);
					}
					else
					{
						goed16.setVisible(false);
						fout16.setVisible(true);
					}
				}
				if(gelderland.getValue() == false){
					provincies[3] = false;
					aantalCheckBox--;
					if (aantalCheckBox > 1) {
						goed16.setVisible(true);
						fout16.setVisible(false);
					}
					else
					{
						goed16.setVisible(false);
						fout16.setVisible(true);
					}
				}
			}
		});
		groningen.addClickHandler(new ClickHandler(){
			@Override
			public void onClick(ClickEvent event) {
				if(groningen.getValue() == true){
					provincies[4] = true;
					aantalCheckBox++;
					if (aantalCheckBox > 1) {
						goed16.setVisible(true);
						fout16.setVisible(false);
					}
					else
					{
						goed16.setVisible(false);
						fout16.setVisible(true);
					}
				}
				if(groningen.getValue() == false){
					provincies[4] = false;
					aantalCheckBox--;
					if (aantalCheckBox > 1) {
						goed16.setVisible(true);
						fout16.setVisible(false);
					}
					else
					{
						goed16.setVisible(false);
						fout16.setVisible(true);
					}
				}
			}
		});
		limburg.addClickHandler(new ClickHandler(){
			@Override
			public void onClick(ClickEvent event) {
				if(limburg.getValue() == true){
					provincies[5] = true;
					aantalCheckBox++;
					if (aantalCheckBox > 1) {
						goed16.setVisible(true);
						fout16.setVisible(false);
					}
					else
					{
						goed16.setVisible(false);
						fout16.setVisible(true);
					}	
				}
				if(limburg.getValue() == false){
					provincies[5] = false;
					aantalCheckBox--;
					if (aantalCheckBox > 1) {
						goed16.setVisible(true);
						fout16.setVisible(false);
					}
					else
					{
						goed16.setVisible(false);
						fout16.setVisible(true);
					}
				}
			}
		});
		noordbrabant.addClickHandler(new ClickHandler(){
			@Override
			public void onClick(ClickEvent event) {
				if(noordbrabant.getValue() == true){
					provincies[6] = true;
					aantalCheckBox++;
					if (aantalCheckBox > 1) {
						goed16.setVisible(true);
						fout16.setVisible(false);
					}
					else
					{
						goed16.setVisible(false);
						fout16.setVisible(true);
					}
				}
				if(noordbrabant.getValue() == false){
					provincies[6] = false;
					aantalCheckBox--;
					if (aantalCheckBox > 1) {
						goed16.setVisible(true);
						fout16.setVisible(false);
					}
					else
					{
						goed16.setVisible(false);
						fout16.setVisible(true);
					}
				}
			}
		});
		noordholland.addClickHandler(new ClickHandler(){
			@Override
			public void onClick(ClickEvent event) {
				if(noordholland.getValue() == true){
					provincies[7] = true;
					aantalCheckBox++;
					if (aantalCheckBox > 1) {
						goed16.setVisible(true);
						fout16.setVisible(false);
					}
					else
					{
						goed16.setVisible(false);
						fout16.setVisible(true);
					}
				}
				if(noordholland.getValue() == false){
					provincies[7] = false;
					aantalCheckBox--;
					if (aantalCheckBox > 1) {
						goed16.setVisible(true);
						fout16.setVisible(false);
					}
					else
					{
						goed16.setVisible(false);
						fout16.setVisible(true);
					}
				}
			}
		});
		overijssel.addClickHandler(new ClickHandler(){
			@Override
			public void onClick(ClickEvent event) {
				if(overijssel.getValue() == true){
					provincies[8] = true;
					aantalCheckBox++;
					if (aantalCheckBox > 1) {
						goed16.setVisible(true);
						fout16.setVisible(false);
					}
					else
					{
						goed16.setVisible(false);
						fout16.setVisible(true);
					}
				}
				if(overijssel.getValue() == false){
					provincies[8] = false;
					aantalCheckBox--;
					if (aantalCheckBox > 1) {
						goed16.setVisible(true);
						fout16.setVisible(false);
					}
					else
					{
						goed16.setVisible(false);
						fout16.setVisible(true);
					}
				}
			}
		});
		utrecht.addClickHandler(new ClickHandler(){
			@Override
			public void onClick(ClickEvent event) {
				if(utrecht.getValue() == true){
					provincies[9] = true;
					aantalCheckBox++;
					if (aantalCheckBox > 1) {
						goed16.setVisible(true);
						fout16.setVisible(false);
					}
					else
					{
						goed16.setVisible(false);
						fout16.setVisible(true);
					}
				}
				if(utrecht.getValue() == false){
					provincies[9] = false;
					aantalCheckBox--;
					if (aantalCheckBox > 1) {
						goed16.setVisible(true);
						fout16.setVisible(false);
					}
					else
					{
						goed16.setVisible(false);
						fout16.setVisible(true);
					}
				}
			}
		});
		zeeland.addClickHandler(new ClickHandler(){
			@Override
			public void onClick(ClickEvent event) {
				if(zeeland.getValue() == true){
					provincies[10] = true;
					aantalCheckBox++;
					if (aantalCheckBox > 1) {
						goed16.setVisible(true);
						fout16.setVisible(false);
					}
					else
					{
						goed16.setVisible(false);
						fout16.setVisible(true);
					}
				}
				if(zeeland.getValue() == false){
					provincies[11] = false;
					aantalCheckBox--;
					if (aantalCheckBox > 1) {
						goed16.setVisible(true);
						fout16.setVisible(false);
					}
					else
					{
						goed16.setVisible(false);
						fout16.setVisible(true);
					}
				}
			}
		});
		zuidholland.addClickHandler(new ClickHandler(){
			@Override
			public void onClick(ClickEvent event) {
				if (zuidholland.getValue() == true){
					provincies[11] = true;
					aantalCheckBox++;
					if (aantalCheckBox > 1) {
						goed16.setVisible(true);
						fout16.setVisible(false);
					}
					else
					{
						goed16.setVisible(false);
						fout16.setVisible(true);
					}
				}
				if (zuidholland.getValue() == false){
					provincies[11] = false;
					aantalCheckBox--;
					if (aantalCheckBox > 1) {
						goed16.setVisible(true);
						fout16.setVisible(false);
					}
					else
					{
						goed16.setVisible(false);
						fout16.setVisible(true);
					}
				}
			}
		});

		final TextArea commentaarText = new TextArea();
		commentaarText.addStyleName("registreren2metcomment");
		Label commentaarLab = new Label("Typ hieronder uw overige opmerkingen neer, die gelden voor uw auto. Bijv. bagage:");

		voegtoe.addClickHandler(new ClickHandler(){
			@Override
			public void onClick(ClickEvent event) {
				if(goed13.isVisible() == true && goed14.isVisible()==true && goed15.isVisible() == true && goed16.isVisible() == true){
					String autoMerk = merkText.getText();
					String autoType = typeText.getText();
					int autoPlaatsen = Integer.parseInt(plaatsText.getText());
					String comment = commentaarText.getText();
					if(comment.trim().equals("")){
						comment = "Geen commentaar opgegeven";
					}
					AsyncCallback<Boolean> autoToevoegen = new AsyncCallback<Boolean>(){
						@Override
						public void onFailure(Throwable caught) {
							Window.alert("Auto toevoegen mislukt, probeer het later nog eens");
						}
						@Override
						public void onSuccess(Boolean result) {
							if(result == true){
								Window.alert("Auto succesvol toegevoegd");
								ZH.thema.showMetHome(email);
							}
							if(result == false){
								Window.alert("Auto toevoegen mislukt, probeer het later nog eens");
							}
						}
					};
					ZH.thema.myService.voegAutoToeZonderHome(email, autoMerk, autoType, autoPlaatsen, provincies, comment, autoToevoegen);
				}
			}
		});

		horizon30.add(merk);
		horizon30.add(merkText);
		horizon30.add(goed13);
		horizon30.add(fout13);
		horizon31.add(type);
		horizon31.add(typeText);
		horizon31.add(goed14);
		horizon31.add(fout14);
		horizon32.add(plaats);
		horizon32.add(plaatsText);
		horizon32.add(plaatsen);
		horizon32.add(goed15);
		horizon32.add(fout15);
		horizon34.add(titleprovincie);
		horizon35.add(drenthe);
		horizon35.add(flevoland);
		horizon35.add(friesland);
		horizon35.add(gelderland);
		horizon36.add(groningen);
		horizon36.add(limburg);
		horizon36.add(noordbrabant);
		horizon36.add(noordholland);
		horizon36.add(goed16);
		horizon36.add(fout16);
		horizon37.add(overijssel);
		horizon37.add(utrecht);
		horizon37.add(zeeland);
		horizon37.add(zuidholland);
		horizon38.add(commentaarText);
		horizon39.add(commentaarLab);
		vertpan.add(voegautotoe);
		vertpan.add(horizon30);
		vertpan.add(horizon31);
		vertpan.add(horizon32);
		vertpan.add(horizon34);
		vertpan.add(horizon35);
		vertpan.add(horizon36);
		vertpan.add(horizon37);
		vertpan.add(horizon39);
		vertpan.add(horizon38);
		vertpan.add(voegtoe);
		eindPanel.add(vertpan);

		return eindPanel;
	}
}